<?xml version="1.0"?>
<doc>
    <assembly>
        <name>permutationTools</name>
    </assembly>
    <members>
        <member name="T:MS.CodePlex.PermutationTools.Exceptions.UniqueParameterNameViolationException">
            <summary>
            Exception indicating that the need for unique parameters has been violated.
            </summary>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.Exceptions.CalledAddAfterNextException">
            <summary>
            Exception indicating the add cannot be called once you are traversing the collection.
            </summary>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.Exceptions.TypeIsNotEnumBasedException">
            <summary>
            Exception indicating that the type passed to the object isn't an enum.
            </summary>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.PermutationCollection">
             <summary>
             a class that allows users to easily create permuation lists using arbitrary array types and enums.
             </summary>
             <example>
             <code>
             public static void example()
             {
                 PermutationCollection pg = new PermutationCollection();
                 string[] stringParameters = { "default", "abcdef", "1234567890", "" };
                 int[] intParameters = { 1, 3, 5 };
            
                 pg.Add("PrimeNumber", intParameters);
                 pg.Add("UserName", stringParameters);
            
                 //automatically add all the members of an enum.
                 pg.Add("GenericUriParserOption", typeof(System.GenericUriParserOptions));
                 //Remove one of the enum members from an added enum.
                 pg.RemoveListMember("GenericUriParserOption", System.GenericUriParserOptions.NoUserInfo);
            
                 Console.WriteLine(pg.NumOfPermutations);
            
                 //display every combination of paramters
                 foreach (Dictionary&lt;string, object> parameters in pg)
                 {
                     int prime = (int)parameters["PrimeNumber"];
                     string username = (string)parameters["UserName"];
                     System.GenericUriParserOptions option = (GenericUriParserOptions)parameters["GenericUriParserOption"];
                     Console.WriteLine("Prime='{0}' UserName='{1}' Option='{2}'", prime, username, option);
                 }
             }
                   
             
             /*
             OUTPUT:
             99
             Prime='1' UserName='' Option='Default'
             Prime='3' UserName='' Option='Default'
             Prime='5' UserName='' Option='Default'
             Prime='1' UserName='abcdef' Option='Default'
             Prime='3' UserName='abcdef' Option='Default'
             Prime='5' UserName='abcdef' Option='Default'
             Prime='1' UserName='1234567890' Option='Default'
             Prime='3' UserName='1234567890' Option='Default'
             Prime='5' UserName='1234567890' Option='Default'
             Prime='1' UserName='' Option='GenericAuthority'
             Prime='3' UserName='' Option='GenericAuthority'
             Prime='5' UserName='' Option='GenericAuthority'
             ...
             */
             </code>
             </example>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.#ctor">
            <summary>
            Default Constructor.
            </summary>        
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.Add(System.String,System.Array)">
            <summary>
            Adds a list and a parameter type to the object.
            </summary>
            <param name="name"></param>
            <param name="type">typeof(MyType)</param>
            <param name="array">An array of type</param>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.Add(System.String,System.Object[])">
            <summary>
            Adds a named list to the object.
            </summary>
            <remarks>
            This is the master overload. Other overloads call into this one.
            </remarks>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.Add(System.String,System.Type)">
            <summary>
            Add an enum as list of parameters.
            </summary>
            <remarks>
            Uses the Enum.GetValues to convert an enum into an array.
            </remarks>
            <param name="type"></param>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.RemoveListMember(System.String,System.Enum)">
            <summary>
            Removes one  members from a previously added list.
            </summary>
            <param name="p"></param>
            <param name="functionalArea"></param>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.GetEnumerator">
            <summary>
            Gets the enumerator to allow foreach operations that returns Dictionary&lt;string,object&gt; array that will visit every combination.
            </summary>
            <returns>ParameterGenerator</returns>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.PermutationCollection.Index">
            <summary>
            Return the index of the last accessed permutation.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.PermutationCollection.Pattern">
            <summary>
            Return a string that lists one digit for each parameter indicating the last index of each parameter.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.PermutationCollection.NumOfPermutations">
            <summary>
            The number of permutations the current lists would generate.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.PermutationCollection.NumOfMinimalSet">
            <summary>
            Returns how many results are needed to visit each value only once.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.PermutationCollection.MinimalSet">
            <summary>
            Returns a result set of Dictionary&gt;string,object&lt; that will visit each value once.
            </summary>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorBase.rollOdometer">
            <summary>
            checks the current state if the counters and "carries the one" if any items are past the limit.
            </summary>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorBase.isCountValid">
            <summary>
            Check to see if the count has gone off the end.
            </summary>
            <returns></returns>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorBase.createNewCurrentDictionary">
            <summary>
            Updates the .Current object. Don't call this unless isCountValid == true!
            </summary>
            <returns></returns>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorBase.updateCollectionItems">
            <summary>
            Call during MoveNext() to update the collection.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorBase.Index">
            <summary>
            The current pattern index.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorBase.CurrentPattern">
            <summary>
            Returns a space delimited string of digits indicating which elements of each list are being visited in the current value.
            </summary>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumerator">
            <summary>
            An enumeration class for all permuations in a collection
            </summary>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorMinimal">
            <summary>
            Returns a collection based on the permutation collection. Every parameter will be returned at least once, but not every permutation.
            </summary>
            <remarks>
            The 0th item of each array will be considered the default and will show up most often.
            </remarks>
            <returns></returns>        
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.PermutationEnumeratorMinimal.MoveNext">
            <summary>
            Move to the next item in the minimal set.
            </summary>
            <returns></returns>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.PermutationCollection.MinimalSetCollection">
            <summary>
            This is a wrapper class to allow the PermutationCollection to expose a second enumerator.
            </summary>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.MinimalSetCollection.#ctor(MS.CodePlex.PermutationTools.PermutationCollection)">
            <summary>
            Returns a collection that will visit every element of every list once.
            </summary>
            <param name="obj"></param>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.PermutationCollection.MinimalSetCollection.GetEnumerator">
            <summary>
            returns and enumerator for use with Foreach that returns a Dictionary&lt;string,object&lt; of the current parameters.
            </summary>
            <returns></returns>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.CombinationGenerator`1">
             <summary>
             A collection of all the combinations of an array or enum where order is irrelevant.
             </summary>
             <remarks>
             This collection allows the user to get N wise combinations of the input list. N can be 1 to the size of the list.
             Foreaching over the collection will return and object array with each combination in turn.
             
             The OneToNPermutations will give all the combinations of 1, 2..N where N is the size of this list. This could be
             used for example to get all of the possible combinations of a bit flag enum.
             </remarks>
             <example>
             This is a small console application that will first show all the combinations possible with three picks from a list of 5 items.
             Then it will show all of the combinations of 1, 2, 3, 4, and 5 items that are possible by using the OneToNPermutations enumerator.
             <code>
                class Program
                {
            
                    enum stuff
                    {
                        A,
                        B,
                        C,
                        D,
                        E
                    }
            
                    static void Main(string[] args)
                    {
                        //get a list of everyone combinations of 3 items from the list.      
                       CombinationGenerator&lt;stuff> cg = new CombinationGenerator&lt;stuff>(typeof(stuff), 3);
                       Console.WriteLine(cg.NumOfCombinations);
                       foreach (stuff[] oa in cg)
                       {
                          foreach (stuff o in oa)
                           {
                               Console.Write("{0} ", o);
                           }
                           Console.WriteLine();
                       }
            
            
                       Console.WriteLine("----------------------------------");
                       Console.WriteLine(cg.NumOfOneToNCombinations);
                       //Get a list of all the combinations of 1, 2..N items from the list where N is the number of items in the list.
                       foreach (stuff[] oa in cg.OneToNPermutations)
                       {
                           foreach (stuff o in oa)
                           {
                               Console.Write("{0} ", o);
                           }
                           Console.WriteLine();
                       }
                    }
                }
             </code>
             </example>
             <typeparam name="T">The element type for the underlying collection.</typeparam>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.#ctor(`0[],System.Int32)">
            <summary>
            Instantiate a new collection based on any array.
            </summary>
            <param name="array">any array</param>
            <param name="pick">The number of combination slots to create. Must be less than or equal too array.Length</param>       
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.#ctor(System.Type,System.Int32)">
            <summary>
            Instantite a collection based off an enum type.
            </summary>
            <remarks>
            Uses the Enum.GetValues(type) method to convert an Enum into an array.
            </remarks>
            <param name="type">typeof(SomeEnum)</param>
            <param name="pick">Number of combination slots to create. Must be less than or equal the number of elements in the Enum.</param>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.GetEnumerator">
            <summary>
            Returns the Enumerator class for use with foreach
            </summary>
            <returns></returns>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.CombinationGenerator`1.Current">
            <summary>
            Returns the current array of items for use with foreach
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.CombinationGenerator`1.NumOfCombinations">
            <summary>
            Returns the number of order indepenant combinations for the giving list with the giving number of picks.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.CombinationGenerator`1.NumOfOneToNCombinations">
            <summary>
            Returns the number of combinations of the list 1 wise + 2 wise ... N Wise where N is the number of items in the list.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.CombinationGenerator`1.OneToNPermutations">
             <summary>
             Exposes a collection of all combinations (order doesn't matter) sized one to the number of items.
             </summary>
             <remarks>
             Exposes a collection that contains all the the combinations of the underlying list from 1 to N where N is the size of the list.
             For example if your list was a 3 item enum {A, B, C,} the output would show all the single, all the pairwise combinations and all the 3 wise combinations.
             
             A
             B
             C
             AB
             AC
             BC
             ABC
             
             Useful for creating lists of all possible combinations of things like enum permissions.
             </remarks>
             <example>
             <code>
             foreach(object[] list in combinationaGenerator.OnToNPermutations)
             {
              foreach(object item in list) { Console.Write("{0} ", item)}
              Console.WriteLine();
             }
             </code>
            
             </example>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationEnumerator">
            <summary>
            the default enumerator.
            </summary>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationEnumerator.#ctor(MS.CodePlex.PermutationTools.CombinationGenerator{`0})">
            <summary>
            Enemerator construtor. Takes a parent CombinationGenerator that has been initialized to type T.
            Since this is only called from CombinationGenerator T is garuanteed to match.
            </summary>
            <param name="obj"></param>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationEnumerator.MoveNext">
            <summary>
            Moves .Current to the next pattern.
            </summary>
            <returns></returns>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationEnumerator.Reset">
            <summary>
            Resets the object to start over from the begining.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationEnumerator.Current">
            <summary>
            Returns the current array of items.
            </summary>
        </member>
        <member name="T:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationOneToNenumerable">
            <summary>
            Wrapper enumerable class to expose a second enumerator type for the class.
            </summary>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationOneToNenumerator.MoveNext">
            <summary>
            Moves .Current to the next pattern in the list.
            </summary>
            <returns></returns>
        </member>
        <member name="M:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationOneToNenumerator.Reset">
            <summary>
            Resest the object to start over from the first pattern.
            </summary>
        </member>
        <member name="P:MS.CodePlex.PermutationTools.CombinationGenerator`1.CombinationOneToNenumerator.Current">
            <summary>
            Returns the current array of items.
            </summary>
        </member>
    </members>
</doc>
